home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / Navigation.p < prev    next >
Text File  |  1996-05-01  |  7KB  |  216 lines

  1. {
  2.      File:        Navigation.p
  3.  
  4.      Contains:    Navigation Services Interfaces
  5.  
  6.      Version:    Technology:    System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Navigation;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __NAVIGATION__}
  28. {$SETC __NAVIGATION__ := 1}
  29.  
  30. {$I+}
  31. {$SETC NavigationIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __APPLEEVENTS__}
  38. {$I AppleEvents.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __FILES__}
  41. {$I Files.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __EVENTS__}
  44. {$I Events.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __MIXEDMODE__}
  47. {$I MixedMode.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __SCRIPT__}
  50. {$I Script.p}
  51. {$ENDC}
  52. {$IFC UNDEFINED __TEXTOBJECTS__}
  53. {$I TextObjects.p}
  54. {$ENDC}
  55. {$IFC UNDEFINED __TIMEOBJECTS__}
  56. {$I TimeObjects.p}
  57. {$ENDC}
  58.  
  59. {$PUSH}
  60. {$ALIGN MAC68K}
  61. {$LibExport+}
  62.  
  63. {$IFC FOR_SYSTEM8_COOPERATIVE }
  64. {$IFC FOR_PTR_BASED_AE }
  65.  
  66. CONST
  67.     gestaltNavigationServicesAttr = 'nvsv';
  68.     gestaltNavigationServicesPresent = 0;
  69.  
  70. {  Values for the "action" parameter of NavAskSaveChanges  }
  71.     kNavSaveChangesClosingDocument = 1;                            {  Closing a document  }
  72.     kNavSaveChangesQuittingApplication = 2;                        {  Quitting the app  }
  73.     kNavSaveChangesOther        = 0;                            {  Neither closing nor quitting  }
  74.  
  75.  
  76. TYPE
  77.     NavAskSaveChangesAction                = UInt16;
  78. {  NavFileInfo is the part of NavFileOrFolderInfo for files  }
  79.     NavFileInfoPtr = ^NavFileInfo;
  80.     NavFileInfo = RECORD
  81.         locked:                    BOOLEAN;
  82.         resourceOpen:            BOOLEAN;
  83.         dataOpen:                BOOLEAN;
  84.         reserved:                BOOLEAN;
  85.         dataSize:                LONGINT;
  86.         resourceSize:            LONGINT;
  87.         finderInfo:                FInfo;
  88.         moreFinderInfo:            FXInfo;
  89.     END;
  90.  
  91. {  NavFolderInfo is the part of NavFileOrFolderInfo for folders and volumes  }
  92.     NavFolderInfoPtr = ^NavFolderInfo;
  93.     NavFolderInfo = RECORD
  94.         shareable:                BOOLEAN;
  95.         sharePoint:                BOOLEAN;
  96.         mounted:                BOOLEAN;
  97.         readable:                BOOLEAN;
  98.         writeable:                BOOLEAN;
  99.         reserved:                BOOLEAN;
  100.         numberOfFiles:            LONGINT;
  101.         finderInfo:                DInfo;
  102.         moreFinderInfo:            DXInfo;
  103.     END;
  104.  
  105. {  NavFileOrFolderInfo is the structure passed to your filter proc for typeFSS AEDescs  }
  106.     NavFileOrFolderInfoPtr = ^NavFileOrFolderInfo;
  107.     NavFileOrFolderInfo = RECORD
  108.         isFolder:                BOOLEAN;
  109.         visible:                BOOLEAN;
  110.         creationDate:            TimeObject;
  111.         modificationDate:        TimeObject;
  112.         CASE INTEGER OF
  113.         0: (
  114.             fileInfo:            NavFileInfo;
  115.             );
  116.         1: (
  117.             folderInfo:            NavFolderInfo;
  118.             );
  119.     END;
  120.  
  121.     NavEventProcPtr = ProcPtr;  { FUNCTION NavEvent((CONST)VAR event: EventRecord; contextPtr: UNIV Ptr): BOOLEAN; }
  122.  
  123.     NavObjectFilterProcPtr = ProcPtr;  { FUNCTION NavObjectFilter(VAR theItem: AEDesc; info: UNIV Ptr; contextPtr: UNIV Ptr): BOOLEAN; }
  124.  
  125.     NavEventUPP = UniversalProcPtr;
  126.     NavObjectFilterUPP = UniversalProcPtr;
  127.     NavDialogOptionsPtr = ^NavDialogOptions;
  128.     NavDialogOptions = RECORD
  129.         location:                Point;                                    {  Top-left of the dialog, or (-1, -1) for default position  }
  130.         banner:                    TextObject;                                {  Optional banner text displayed in the dialog  }
  131.         defaultButtonLabel:        TextObject;                                {  Label of the default button (or null string for default)  }
  132.         customPanel:            Ptr;                                    {  Custom SOM panel to be inserted, if any  }
  133.     END;
  134.  
  135.     NavReplyRecordPtr = ^NavReplyRecord;
  136.     NavReplyRecord = RECORD
  137.         validRecord:            BOOLEAN;                                {  True if the user confirmed the selection, false on cancel  }
  138.         replacing:                BOOLEAN;                                {  True if we are overwriting an existing object (put only)  }
  139.         selection:                AEDesc;                                    {  AppleEvent descriptor of the selected object  }
  140.     END;
  141.  
  142. {  return values from NavAskSaveChanges, NavCustomAskSaveChanges  }
  143.  
  144. CONST
  145.     askSaveChangesSave            = 1;
  146.     askSaveChangesCancel        = 2;
  147.     askSaveChangesDontSave        = 3;
  148.  
  149.  
  150. TYPE
  151.     NavAskSaveChangesResult                = UInt16;
  152. {
  153.  To specify which types of data you are willing to receive, use the NavTypeList.
  154.  *
  155.  * This is not a list of file types; that must be specified in an 'open' resource
  156.  * if you are displaying files, or you can use a filter procedure. It is a list of
  157.  * AEDesc types. Only items which can be coerced to these descriptor types will be
  158.  * displayed in the list, descended into as containers, or returned in a reply.
  159.  * The list is terminated by a null entry and may be of any length.  At present
  160.  * only typeFSS and typeAlias are supported.
  161.  *
  162.  * If you include typeAlias in the list, then aliases of all types will be allowed,
  163.  * and aliases will not be resolved before they are given to you. Otherwise, aliases
  164.  * will be resolved internally and you will be passed their resolved AEDescs if
  165.  * they can be coerced into one of the types you want.
  166. }
  167.     NavTypeList                            = ARRAY [0..3] OF DescType;
  168.     ConstNavTypeListPtr                    = ^DescType;
  169. {
  170.  *    Navigation Services Dialogs
  171. }
  172. FUNCTION NavAskSaveChanges(applicationName: ConstTextObject; documentName: ConstTextObject; action: NavAskSaveChangesAction; VAR reply: NavAskSaveChangesResult; location: Point; eventProc: NavEventUPP; contextPtr: UNIV Ptr): OSErr;
  173. FUNCTION NavCustomAskSaveChanges(message: ConstTextObject; VAR reply: NavAskSaveChangesResult; location: Point; eventProc: NavEventUPP; contextPtr: UNIV Ptr): OSErr;
  174. FUNCTION NavGetObject({CONST}VAR defaultObject: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; openResourceID: INTEGER; typeList: ConstNavTypeListPtr; filterProc: NavObjectFilterUPP; eventProc: NavEventUPP; contextPtr: UNIV Ptr): OSErr;
  175. FUNCTION NavPutObject({CONST}VAR defaultObject: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; contextPtr: UNIV Ptr): OSErr;
  176. {
  177.  * Generating unique file names
  178. }
  179. FUNCTION MakeUniqueNameInFolder(VAR folder: FSSpec; VAR name: TextObject): OSErr; C;
  180.  
  181. CONST
  182.     uppNavEventProcInfo = $000003D0;
  183.     uppNavObjectFilterProcInfo = $00000FD0;
  184.  
  185. FUNCTION NewNavEventProc(userRoutine: NavEventProcPtr): NavEventUPP;
  186.     {$IFC NOT GENERATINGCFM }
  187.     INLINE $2E9F;
  188.     {$ENDC}
  189.  
  190. FUNCTION NewNavObjectFilterProc(userRoutine: NavObjectFilterProcPtr): NavObjectFilterUPP;
  191.     {$IFC NOT GENERATINGCFM }
  192.     INLINE $2E9F;
  193.     {$ENDC}
  194.  
  195. FUNCTION CallNavEventProc({CONST}VAR event: EventRecord; contextPtr: UNIV Ptr; userRoutine: NavEventUPP): BOOLEAN;
  196.     {$IFC NOT GENERATINGCFM}
  197.     INLINE $205F, $4E90;
  198.     {$ENDC}
  199.  
  200. FUNCTION CallNavObjectFilterProc(VAR theItem: AEDesc; info: UNIV Ptr; contextPtr: UNIV Ptr; userRoutine: NavObjectFilterUPP): BOOLEAN;
  201.     {$IFC NOT GENERATINGCFM}
  202.     INLINE $205F, $4E90;
  203.     {$ENDC}
  204. {$ENDC}
  205. {$ENDC}
  206. {$ALIGN RESET}
  207. {$POP}
  208.  
  209. {$SETC UsingIncludes := NavigationIncludes}
  210.  
  211. {$ENDC} {__NAVIGATION__}
  212.  
  213. {$IFC NOT UsingIncludes}
  214.  END.
  215. {$ENDC}
  216.